package com.cyf.pay.wxpay.bean;

import javax.xml.bind.annotation.XmlRootElement;
import java.text.SimpleDateFormat;

/**
 * 响应：微信订单查询
 * Created by cage on 2017/2/24.
 */
@XmlRootElement(name = "xml")
public class WxpayQueryOrderRsp {
    public static final String SUCCESS = "SUCCESS";
    public static final String FAIL = "FAIL";

    public static final String TRADE_STATE_SUCCESS = "SUCCESS"; // SUCCESS—支付成功
    public static final String TRADE_STATE_REFUND = "REFUND"; // REFUND—转入退款
    public static final String TRADE_STATE_NOTPAY = "NOTPAY"; // NOTPAY—未支付
    public static final String TRADE_STATE_CLOSED = "CLOSED"; // CLOSED—已关闭
    public static final String TRADE_STATE_REVOKED = "REVOKED"; // REVOKED—已撤销（刷卡支付）
    public static final String TRADE_STATE_USERPAYING = "USERPAYING"; // USERPAYING--用户支付中
    public static final String TRADE_STATE_PAYERROR = "PAYERROR"; // PAYERROR--支付失败(其他原因，如银行返回失败)

    public static final SimpleDateFormat TIME_END_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss");

    private String return_code; // 返回状态码 SUCCESS/FAIL 此字段是通信标识，非交易标识，交易是否成功需要查看result_code来判断
    private String return_msg;// 返回信息

    // 以下字段在return_code为SUCCESS的时候有返回
    private String appid;   // 应用APPID 是
    private String mch_id;  // 商户号 是
    private String nonce_str;   // 随机字符串 是
    private String sign;// 签名 是
    private String result_code;// 业务结果 result_code 是 SUCCESS/FAIL
    private String err_code;// 错误代码 否
    private String err_code_des;// 错误代码描述 否

    // 以下字段在return_code 和result_code都为SUCCESS的时候有返回
    private String device_info; // 设备号  否
    private String openid;  // 用户标识
    private String is_subscribe; //是否关注公众账号 否 Y-关注，N-未关注
    private String trade_type; // 交易类型 是 APP	调用接口提交的交易类型
    private String trade_state; // 交易状态 是 SUCCESS

    private String bank_type;// 付款银行 是 CMC	银行类型，采用字符串类型的银行标识
    private int total_fee;// 总金额 是 单位为分
    private String fee_type;// 货币种类 否
    private int cash_fee;// 现金支付金额 是
    private String cash_fee_type;// 现金支付货币类型 否
    private int coupon_fee;// 代金券或立减优惠金额 否 “代金券或立减优惠”金额<=订单总金额，订单总金额-“代金券或立减优惠”金额=现金支付金额，详见支付金额
    private int coupon_count; // 代金券或立减优惠使用数量 否 代金券或立减优惠使用数量
    private String coupon_batch_id_0;   // 代金券或立减优惠批次ID 否 代金券或立减优惠批次ID ,$n为下标，从0开始编号
    private String coupon_id_0; // 代金券或立减优惠ID 否	代金券或立减优惠ID, $n为下标，从0开始编号
    private int coupon_fee_0; // 单个代金券或立减优惠支付金额	否	单个代金券或立减优惠支付金额, $n为下标，从0开始编号
    private String transaction_id; // 微信支付订单号	是
    private String out_trade_no;// 商户订单号 是
    private String attach;// 附加数据 否
    private String time_end;// 支付完成时间 是 格式为yyyyMMddHHmmss
    private String trade_state_desc;// 交易状态描述	是

    public WxpayQueryOrderRsp() {
    }

    public WxpayQueryOrderRsp(String return_code) {
        this.return_code = return_code;
    }

    public static String getSUCCESS() {
        return SUCCESS;
    }

    public static String getFAIL() {
        return FAIL;
    }

    public String getReturn_code() {
        return return_code;
    }

    public void setReturn_code(String return_code) {
        this.return_code = return_code;
    }

    public String getReturn_msg() {
        return return_msg;
    }

    public void setReturn_msg(String return_msg) {
        this.return_msg = return_msg;
    }

    public String getAppid() {
        return appid;
    }

    public void setAppid(String appid) {
        this.appid = appid;
    }

    public String getMch_id() {
        return mch_id;
    }

    public void setMch_id(String mch_id) {
        this.mch_id = mch_id;
    }

    public String getNonce_str() {
        return nonce_str;
    }

    public void setNonce_str(String nonce_str) {
        this.nonce_str = nonce_str;
    }

    public String getSign() {
        return sign;
    }

    public void setSign(String sign) {
        this.sign = sign;
    }

    public String getResult_code() {
        return result_code;
    }

    public void setResult_code(String result_code) {
        this.result_code = result_code;
    }

    public String getErr_code() {
        return err_code;
    }

    public void setErr_code(String err_code) {
        this.err_code = err_code;
    }

    public String getErr_code_des() {
        return err_code_des;
    }

    public void setErr_code_des(String err_code_des) {
        this.err_code_des = err_code_des;
    }

    public String getDevice_info() {
        return device_info;
    }

    public void setDevice_info(String device_info) {
        this.device_info = device_info;
    }

    public String getOpenid() {
        return openid;
    }

    public void setOpenid(String openid) {
        this.openid = openid;
    }

    public String getIs_subscribe() {
        return is_subscribe;
    }

    public void setIs_subscribe(String is_subscribe) {
        this.is_subscribe = is_subscribe;
    }

    public String getTrade_type() {
        return trade_type;
    }

    public void setTrade_type(String trade_type) {
        this.trade_type = trade_type;
    }

    public String getTrade_state() {
        return trade_state;
    }

    public void setTrade_state(String trade_state) {
        this.trade_state = trade_state;
    }

    public String getBank_type() {
        return bank_type;
    }

    public void setBank_type(String bank_type) {
        this.bank_type = bank_type;
    }

    public int getTotal_fee() {
        return total_fee;
    }

    public void setTotal_fee(int total_fee) {
        this.total_fee = total_fee;
    }

    public String getFee_type() {
        return fee_type;
    }

    public void setFee_type(String fee_type) {
        this.fee_type = fee_type;
    }

    public int getCash_fee() {
        return cash_fee;
    }

    public void setCash_fee(int cash_fee) {
        this.cash_fee = cash_fee;
    }

    public String getCash_fee_type() {
        return cash_fee_type;
    }

    public void setCash_fee_type(String cash_fee_type) {
        this.cash_fee_type = cash_fee_type;
    }

    public int getCoupon_fee() {
        return coupon_fee;
    }

    public void setCoupon_fee(int coupon_fee) {
        this.coupon_fee = coupon_fee;
    }

    public int getCoupon_count() {
        return coupon_count;
    }

    public void setCoupon_count(int coupon_count) {
        this.coupon_count = coupon_count;
    }

    public String getCoupon_batch_id_0() {
        return coupon_batch_id_0;
    }

    public void setCoupon_batch_id_0(String coupon_batch_id_0) {
        this.coupon_batch_id_0 = coupon_batch_id_0;
    }

    public String getCoupon_id_0() {
        return coupon_id_0;
    }

    public void setCoupon_id_0(String coupon_id_0) {
        this.coupon_id_0 = coupon_id_0;
    }

    public int getCoupon_fee_0() {
        return coupon_fee_0;
    }

    public void setCoupon_fee_0(int coupon_fee_0) {
        this.coupon_fee_0 = coupon_fee_0;
    }

    public String getTransaction_id() {
        return transaction_id;
    }

    public void setTransaction_id(String transaction_id) {
        this.transaction_id = transaction_id;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getAttach() {
        return attach;
    }

    public void setAttach(String attach) {
        this.attach = attach;
    }

    public String getTime_end() {
        return time_end;
    }

    public void setTime_end(String time_end) {
        this.time_end = time_end;
    }

    public String getTrade_state_desc() {
        return trade_state_desc;
    }

    public void setTrade_state_desc(String trade_state_desc) {
        this.trade_state_desc = trade_state_desc;
    }

    @Override
    public String toString() {
        return "WxpayQueryOrderRsp{" +
                "return_code='" + return_code + '\'' +
                ", return_msg='" + return_msg + '\'' +
                ", result_code='" + result_code + '\'' +
                ", err_code='" + err_code + '\'' +
                ", err_code_des='" + err_code_des + '\'' +
                ", trade_type='" + trade_type + '\'' +
                ", trade_state='" + trade_state + '\'' +
                ", total_fee=" + total_fee +
                ", transaction_id='" + transaction_id + '\'' +
                ", out_trade_no='" + out_trade_no + '\'' +
                ", time_end='" + time_end + '\'' +
                ", trade_state_desc='" + trade_state_desc + '\'' +
                '}';
    }
}
